iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
Cloud Native

時光之鏡:透視過去、現在與未來的 Observability系列 第 7

Monitoring Best Practices - 監控的黃金法則

  • 分享至 

  • xImage
  •  

Prometheus 從 Application 與 Exporter 收集各種 Metrics 後,面對上百種指標,我們應該特別關注哪些呢?參考別人分享的各種 Dashboard 當然是一個快速有效的方式,但是否有更核心的概念可以遵循?以下將介紹三種常見的 Monitoring Best Practices:

The USE Method

The USE Method,由 Brendan Gregg 發明,用於排除系統效能問題,可以快速判斷資源瓶頸或錯誤情況。USE 分別代表的是:

  1. Utilization 使用率:資源在多少比率的時間中是忙碌的,例如 CPU 使用率、網路使用率、硬碟使用率等。

  2. Saturation 飽和度:資源有多少工作在等待被完成,例如 CPU Run Queue、網路 Buffer、硬碟 I/O Queue 等。

  3. Errors 錯誤情況:錯誤事件的數量,例如 HTTP 500、硬碟 I/O Error 等。

The USE Method 的設計理念是,在系統出現錯誤時,可以針對 CPU、記憶體、網路、硬碟等資源,依序檢查上述三項指標,找出問題所在。反過來說,可以隨時監控這三項指標,提早發現問題。

The Four Golden Signals

The Four Golden Signals 出自於 Google 的 Site Reliability Engineering,該書在 Google SRE 網站上可免費線上閱讀。這四個指標是在監控分散式系統時的重點:

  1. Latency 服務請求時間:處理請求所需時間,需區分成功與失敗的請求。例如,HTTP 500 可能很快得到回應,而一般請求需更長時間執行流程,若合併計算,會難以分辨取得的實行時間指標是否異常。

  2. Traffic 使用者用量:系統上使用者的需求量,需依照服務類型來定義,例如:

    • API、Web:每秒請求數
    • 串流服務:網路 I/O、連線數
    • DB:每秒查詢數、交易數
  3. Errors 錯誤比率:失敗請求的比率,需區分顯式(Explicitly)與隱式(Implicitly)的錯誤,例如:

    • 顯式:如 HTTP 500、HTTP 404
    • 隱式:HTTP Code 正常,但業務邏輯錯誤,如回傳內容包含 returnCode = -1
  4. Saturation 資源飽和度:資源有多滿,資源飽和後服務效能可能會大幅降低或不可用,例如:硬碟空間、網路頻寬。

The RED Method

The RED MethodWeaveworks 所遵循的監控理念,由 Weaveworks 前工程師、現任 Grafana Labs CTO Tom Wilkie 提出,融合了 The USE Method 與 The Four Golden Signals,定義了三種指標用以監控系統中的所有微服務:

  1. (Request) Rate:每秒請求數
  2. (Request) Errors:每秒失敗請求數
  3. (Request) Duration:請求耗時分布

Lab

範例程式碼:07-monitoring-best-practices

Quick Start

  1. 啟動所有服務

    docker-compose up -d
    
  2. 檢視服務

    1. Prometheus: http://localhost:9090
    2. FastAPI App: http://localhost:8000
      1. 可瀏覽 http://localhost:8000/metrics 確認 Metrics 資料
      2. 對 FastAPI App 發送 HTTP Request,即可看到 Dashboard 的變化
        1. 透過瀏覽器發送 Request

          1. http://localhost:8000
          2. http://localhost:8000/io_task
          3. http://localhost:8000/cpu_task
          4. http://localhost:8000/random_sleep
          5. http://localhost:8000/random_status
        2. 或是使用 k6 發送 Request

          k6 run --vus 1 --duration 300s k6-script.js
          
    3. Grafana: http://localhost:3000,登入帳號密碼為 admin/admin
  3. 關閉所有服務

    docker-compose down
    

Goals

  1. 根據 Prometheus 收集到的 FastAPI App Metrics,在 Grafana 中建立一個應用 The RED Method 的 Dashboard

小結

The USE Method 主要針對資源瓶頸與效能進行監控;The Four Golden Signals 則著重於分散式系統的關鍵指標;The RED Method 則是結合了前兩者的精髓。在面臨繁多的指標而感覺迷茫時,可以從這三大方法入手,找出最適合的策略,再依此進行擴展。

了解 Prometheus 的生成、收集、應用,以及監控的最佳實踐後,接下來我們將再度進入工具篇,介紹 Prometheus 的各種儲存方案及其他相關監控工具。

參考資料

  1. The RED Method: key metrics for microservices architecture
  2. The USE Method
  3. Grafana dashboard best practices
  4. The RED Method: How to Instrument Your Services

上一篇
Exporter - 揭露萬物真相的鏡子
下一篇
Mimir - 收羅萬象的智者
系列文
時光之鏡:透視過去、現在與未來的 Observability30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言